// eslint-disable-next-line @typescript-eslint/triple-slash-reference
/// <reference  path="../../support/index.d.ts" />
import '../../support/commands'

// Напишите следующий тест-кейс и успешно выполните его: (2 балла)
//   + Зайти на форму авторизации.
//   + Прописать кейсы авторизации: негативный (с ошибками), позитивный (с правильными данными).
//   + После авторизации проверить правильность нахождения пользователя на главной странице.
//   + Сделать логаут.

describe('Тестируем авторизацию (ошибки), редитект на главную, логаут', () => {
	beforeEach(() => {
		cy.viewport(1480, 920)
		cy.visit('/signin')
		cy.intercept('https://api.react-learning.ru/signin').as('signin')
	})

	it('Зайти на форму авторизации', () => {
		cy.url().should('be.equal', 'http://localhost:3000/signin')
	})

	it('кейсы авторизации: негативный (с ошибками)', () => {
		cy.get('input[name="email"]').type('ilya_polokhovmail.ru')
		cy.get('input[name="password"]').type('0')
		cy.get('form button[type="submit"]').contains('Войти').click()
		cy.get('form div:first-child p').contains('email must be a valid email')
		cy.get('form div:nth-child(2) p').contains(
			'password must be at least 6 characters'
		)
	})

	it('кейсы авторизации: негативный (с ошибками - всё пусто)', () => {
		cy.get('input[name="email"]').should('have.value', '')
		cy.get('input[name="password"]').should('have.value', '')
		cy.get('form button[type="submit"]').contains('Войти').click()
		cy.get('form div:first-child p').contains('email is a required field')
		cy.get('form div:nth-child(2) p').contains(
			'password must be at least 6 characters'
		)
	})

	it('кейсы авторизации: позитивный (с правильными данными)', () => {
		cy.url().should('be.equal', 'http://localhost:3000/signin')
		cy.get('input[name="email"]').type('ilya_polokhov@mail.ru')
		cy.get('input[name="password"]').type('666666')
		cy.get('form button[type="submit"]').contains('Войти').click()
		cy.url().should('be.equal', 'http://localhost:3000/')
	})

	it('Сделать логаут', () => {
		cy.login()
		cy.get('[data-testid="PROFILE_BUTTON_TEST_ID"]').click()
		cy.url().should('be.equal', 'http://localhost:3000/profile')
		cy.get('[data-testid="LOGOUT_BUTTON_TEST_ID"]').click()
		cy.url().should('be.equal', 'http://localhost:3000/signin')
	})
})
